package com.wyr.leetcode.step1.array;

import java.util.ArrayList;
import java.util.List;

public class SummaryRangesTest {
    /**
     * 给定一个  无重复元素 的 有序 整数数组 nums 。
     *
     * 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说，nums 的每个元素都恰好被某个区间范围所覆盖，并且不存在属于某个范围但不属于 nums 的数字 x 。
     *
     * 列表中的每个区间范围 [a,b] 应该按如下格式输出：
     *
     * "a->b" ，如果 a != b
     * "a" ，如果 a == b
     *
     * https://leetcode.cn/problems/summary-ranges/description/
     */
    public static List<String> summaryRanges(int[] nums) {
        List<String> ans = new ArrayList<>();
        if (nums.length == 0) {
            return ans;
        }
        if (nums.length == 1) {
            ans.add(nums[0] + "");
            return ans;
        }
        int p1 = 0;
        int p2 = 1;
        for (; p2 < nums.length;) {
            // 如果连续
            if (nums[p2] == nums[p2 - 1] + 1) {
                p2++;
            } else {
                // 如果不连续
                ans.add(nums[p1] == nums[p2 - 1] ? "" + nums[p1] : nums[p1] + "->" + nums[p2 - 1]);
                p1 = p2;
                p2++;
            }
        }
        ans.add(nums[p1] == nums[p2 - 1] ? "" + nums[p1] : nums[p1] + "->" + nums[p2 - 1]);
        return ans;
    }

    public static void main(String[] args) {
        int[] nums = {0,2,3,4,6,8,9};
        summaryRanges(nums);
    }
}
